Asian American Quality of Life: Analysis

Author

Miguel Fudolig, Luke Cho, Lawrence Kim, Boya Liu

library(tidyverse)
library(ggplot2)
library(lavaan)
library(car)

Data set

This data set is from the 2015 Asian American Quality of Life survey. Participants are from Austin, Texas.

Input data set

qol <- read_csv("AAQoL.csv") |> mutate(across(where(is.character), ~as.factor(.x))) |> 
  mutate(`English Difficulties`=relevel(`English Difficulties`,ref="Not at all"),
         `English Speaking`=relevel(`English Speaking`,ref="Not at all"),
         Ethnicity = relevel(Ethnicity,ref="Chinese"))
New names:
Rows: 2609 Columns: 231
── Column specification
──────────────────────────────────────────────────────── Delimiter: "," chr
(190): Gender, Ethnicity, Marital Status, No One, Spouse, Children, Gran... dbl
(41): Survey ID, Age, Education Completed, Household Size, Grandparent,...
ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
Specify the column types or set `show_col_types = FALSE` to quiet this message.
• `Other` -> `Other...17`
• `Other` -> `Other...89`
qol |> DT::datatable()
Warning in instance$preRenderHook(instance): It seems your data is too big for
client-side DataTables. You may consider server-side processing:
https://rstudio.github.io/DT/server.html

There are 2,609 responses, some with missing data.

Summary statistics

Gender

qol |> group_by(`Gender`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  Gender     n   pct
  <fct>  <int> <dbl>
1 Female  1425 54.6 
2 Male    1157 44.3 
3 <NA>      27  1.03

Age

qol |> filter(!is.na(Age)) |> summarize(age=mean(Age),SD=sd(Age),min=min(Age),max=max(Age))
# A tibble: 1 × 4
    age    SD   min   max
  <dbl> <dbl> <dbl> <dbl>
1  42.9  17.1    18    98
qol |> filter(Age >= 50) |> summarize (n=n())
# A tibble: 1 × 1
      n
  <int>
1   853
qol |> filter(Age >= 65) |> summarize (n=n(), median=quantile(Age,0.5))
# A tibble: 1 × 2
      n median
  <int>  <dbl>
1   382     71

Ethnicity

qol |> group_by(Ethnicity) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 7 × 3
  Ethnicity        n     pct
  <fct>        <int>   <dbl>
1 Chinese        639 24.5   
2 Asian Indian   574 22.0   
3 Vietnamese     514 19.7   
4 Korean         471 18.1   
5 Filipino       265 10.2   
6 Other          144  5.52  
7 <NA>             2  0.0767

Marital Status

qol |> group_by(`Marital Status`) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Marital Status`          n    pct
  <fct>                 <int>  <dbl>
1 Married                1725 66.1  
2 Single                  726 27.8  
3 Living with a partner   110  4.22 
4 Other                    30  1.15 
5 <NA>                     18  0.690

Living Alone

qol |> mutate(alone=if_else(`No One`==0,"With Others","Alone")) |>
  mutate(alone=factor(alone, levels=c("Alone","With Others"))) |> 
  group_by(alone) |> 
  summarize(n=n()) |> 
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  alone           n    pct
  <fct>       <int>  <dbl>
1 With Others  2392 91.7  
2 Alone         212  8.13 
3 <NA>            5  0.192

Religion

qol |> group_by(Religion) |> summarize(n=n()) |> mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 8 × 3
  Religion       n    pct
  <fct>      <int>  <dbl>
1 Protestant   645 24.7  
2 None         506 19.4  
3 Catholic     492 18.9  
4 Hindu        479 18.4  
5 Buddhist     350 13.4  
6 Muslim        68  2.61 
7 Other         47  1.80 
8 <NA>          22  0.843

Employment

qol |> mutate(`Full Time Employment`= ifelse(`Full Time Employment`==0,"No","Yes")) |> 
                group_by(`Full Time Employment`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `Full Time Employment`     n    pct
  <chr>                  <int>  <dbl>
1 No                      1458 55.9  
2 Yes                     1144 43.8  
3 <NA>                       7  0.268

US Born

qol |>group_by(`US Born`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `US Born`     n    pct
  <fct>     <int>  <dbl>
1 No         2353 90.2  
2 Yes         239  9.16 
3 <NA>         17  0.652

Duration

qol |> filter(!is.na(`Duration of Residency`)) |> 
  summarize(mean=mean(`Duration of Residency`), SD = sd(`Duration of Residency`))
# A tibble: 1 × 2
   mean    SD
  <dbl> <dbl>
1  15.6  12.7

English Speaking and Difficulty

Primary Speakers

1 = Primary Speaker, 0 = non-primary speaker

qol |> group_by(`Primary Language`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  `Primary Language`     n    pct
               <dbl> <int>  <dbl>
1                  1  1725 66.1  
2                  0   859 32.9  
3                 NA    25  0.958

Profiency

qol |> group_by(`English Speaking`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `English Speaking`     n    pct
  <fct>              <int>  <dbl>
1 Very well            974 37.3  
2 Well                 808 31.0  
3 Not well             632 24.2  
4 Not at all           177  6.78 
5 <NA>                  18  0.690
qol |> group_by(`English Difficulties`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `English Difficulties`     n   pct
  <fct>                  <int> <dbl>
1 Not at all               772 29.6 
2 Not much                 733 28.1 
3 Much                     549 21.0 
4 Very much                516 19.8 
5 <NA>                      39  1.49

Familiarity with America and Ethnic Origin

qol |> group_by(`Familiarity with America`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Familiarity with America`     n   pct
  <fct>                      <int> <dbl>
1 High                        1238 47.5 
2 Low                          721 27.6 
3 Very high                    498 19.1 
4 Very low                     123  4.71
5 <NA>                          29  1.11
qol |> group_by(`Familiarity with Ethnic Origin`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Familiarity with Ethnic Origin`     n   pct
  <fct>                            <int> <dbl>
1 High                              1369 52.5 
2 Very high                          864 33.1 
3 Low                                295 11.3 
4 Very low                            51  1.95
5 <NA>                                30  1.15

Comparing Familiarity with Ethnic Origin and America,

qol |> group_by(`Familiarity with Ethnic Origin`,`Familiarity with America`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
`summarise()` has grouped output by 'Familiarity with Ethnic Origin'. You can
override using the `.groups` argument.
# A tibble: 23 × 4
# Groups:   Familiarity with Ethnic Origin [5]
   `Familiarity with Ethnic Origin` `Familiarity with America`     n   pct
   <fct>                            <fct>                      <int> <dbl>
 1 High                             High                         711 51.9 
 2 High                             Low                          431 31.5 
 3 Very high                        High                         422 48.8 
 4 Very high                        Very high                    250 28.9 
 5 Very high                        Low                          167 19.3 
 6 High                             Very high                    165 12.1 
 7 Low                              Low                          109 36.9 
 8 Low                              High                          91 30.8 
 9 Low                              Very high                     67 22.7 
10 High                             Very low                      51  3.73
# ℹ 13 more rows

Identifying to the ethnic community

qol |> group_by(`Identify Ethnically`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  `Identify Ethnically`     n   pct
  <fct>                 <int> <dbl>
1 Somewhat close         1211 46.4 
2 Very close             1039 39.8 
3 Not very close          293 11.2 
4 <NA>                     35  1.34
5 Not at all               31  1.19

Belonging to the ethnic community

qol |> group_by(`Belonging`) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 5 × 3
  Belonging         n   pct
  <fct>         <int> <dbl>
1 Somewhat       1255 48.1 
2 Very much       766 29.4 
3 Not very much   450 17.2 
4 Not at all       87  3.33
5 <NA>             51  1.95

Perceived Discrimination

qol |> group_by(Discrimination) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 3 × 3
  Discrimination     n   pct
           <dbl> <int> <dbl>
1              0  1598  61.2
2              1   694  26.6
3             NA   317  12.2

Income

qol |> group_by(Income) |> summarize(n=n()) |>
  mutate(pct = n/sum(n)*100) |> 
  arrange(desc(n))
# A tibble: 9 × 3
  Income                n   pct
  <fct>             <int> <dbl>
1 $70,000 and over    993 38.1 
2 $0 - $9,999         254  9.74
3 $30,000 - $39,999   207  7.93
4 $10,000 - $19,999   205  7.86
5 <NA>                203  7.78
6 $20,000 - $29,999   198  7.59
7 $60,000 - $69,999   190  7.28
8 $40,000 - $49,999   181  6.94
9 $50,000 - $59,999   178  6.82

Analysis

Income

Source of Information association with income after controlling for ethnicity.

qol_1 <- qol |> select(Family,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                       0.9835     0.1686   5.835 5.39e-09 ***
Income$10,000 - $19,999          -0.4017     0.1978  -2.031 0.042272 *  
Income$20,000 - $29,999          -0.3867     0.2003  -1.931 0.053474 .  
Income$30,000 - $39,999          -0.5303     0.1964  -2.700 0.006926 ** 
Income$40,000 - $49,999          -0.6108     0.2035  -3.002 0.002683 ** 
Income$50,000 - $59,999          -0.4058     0.2040  -1.989 0.046698 *  
Income$60,000 - $69,999          -0.6197     0.1994  -3.107 0.001889 ** 
Income$70,000 and over           -0.5698     0.1488  -3.829 0.000129 ***
EthnicityAsian Indian            -0.3872     0.1262  -3.067 0.002161 ** 
EthnicityFilipino                -0.2240     0.1596  -1.403 0.160531    
EthnicityKorean                  -0.6323     0.1316  -4.804 1.56e-06 ***
EthnicityOther                   -0.8091     0.2004  -4.037 5.41e-05 ***
EthnicityVietnamese              -0.7411     0.1296  -5.719 1.07e-08 ***
`English Difficulties`Much        0.2193     0.1216   1.804 0.071241 .  
`English Difficulties`Not much   -0.1465     0.1121  -1.307 0.191244    
`English Difficulties`Very much  -0.2561     0.1226  -2.089 0.036718 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3278.8  on 2365  degrees of freedom
Residual deviance: 3199.1  on 2350  degrees of freedom
AIC: 3231.1

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Income                   17.865  7   0.012592 *  
Ethnicity                46.064  5  8.812e-09 ***
`English Difficulties`   15.163  3   0.001683 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Close Friends association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Close Friend`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Close Friend`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.13492    0.16582  -0.814   0.4158    
Income$10,000 - $19,999         -0.12475    0.19739  -0.632   0.5274    
Income$20,000 - $29,999         -0.15124    0.20182  -0.749   0.4536    
Income$30,000 - $39,999         -0.08579    0.19680  -0.436   0.6629    
Income$40,000 - $49,999         -0.43329    0.21103  -2.053   0.0401 *  
Income$50,000 - $59,999         -0.22828    0.20669  -1.104   0.2694    
Income$60,000 - $69,999         -0.46163    0.20487  -2.253   0.0242 *  
Income$70,000 and over          -0.20467    0.14675  -1.395   0.1631    
EthnicityAsian Indian            0.06090    0.12518   0.486   0.6266    
EthnicityFilipino               -0.71227    0.17234  -4.133 3.58e-05 ***
EthnicityKorean                 -0.20977    0.13206  -1.588   0.1122    
EthnicityOther                  -0.43573    0.20772  -2.098   0.0359 *  
EthnicityVietnamese             -0.62180    0.13420  -4.633 3.60e-06 ***
`English Difficulties`Much       0.15348    0.12416   1.236   0.2164    
`English Difficulties`Not much   0.12027    0.11561   1.040   0.2982    
`English Difficulties`Very much -0.06415    0.12739  -0.504   0.6146    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3129.1  on 2366  degrees of freedom
Residual deviance: 3070.5  on 2351  degrees of freedom
AIC: 3102.5

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)    
Income                    8.196  7     0.3156    
Ethnicity                43.365  5  3.116e-08 ***
`English Difficulties`    3.463  3     0.3256    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Acquaintances association with income after controlling for ethnicity.

qol_1 <- qol |> select(Acquaintances,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Acquaintances~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Acquaintances ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.727617   0.220213  -7.845 4.32e-15 ***
Income$10,000 - $19,999          0.002513   0.249860   0.010   0.9920    
Income$20,000 - $29,999         -0.219677   0.261358  -0.841   0.4006    
Income$30,000 - $39,999          0.278483   0.237736   1.171   0.2414    
Income$40,000 - $49,999         -0.218013   0.265666  -0.821   0.4119    
Income$50,000 - $59,999         -0.195756   0.269101  -0.727   0.4670    
Income$60,000 - $69,999         -0.402071   0.273372  -1.471   0.1414    
Income$70,000 and over          -0.126052   0.190403  -0.662   0.5080    
EthnicityAsian Indian            0.002203   0.181318   0.012   0.9903    
EthnicityFilipino               -0.230734   0.244509  -0.944   0.3453    
EthnicityKorean                  0.932955   0.162692   5.734 9.78e-09 ***
EthnicityOther                  -0.624315   0.353287  -1.767   0.0772 .  
EthnicityVietnamese              0.363443   0.170930   2.126   0.0335 *  
`English Difficulties`Much       0.162197   0.155709   1.042   0.2976    
`English Difficulties`Not much   0.146756   0.144410   1.016   0.3095    
`English Difficulties`Very much -0.417090   0.186744  -2.233   0.0255 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2184.9  on 2365  degrees of freedom
Residual deviance: 2086.6  on 2350  degrees of freedom
AIC: 2118.6

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Acquaintances
                       LR Chisq Df Pr(>Chisq)    
Income                    8.626  7   0.280627    
Ethnicity                59.637  5  1.445e-11 ***
`English Difficulties`   11.434  3   0.009596 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Health professionals association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Heal Professionals`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Heal Professionals`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Heal Professionals` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.10904    0.16694   0.653 0.513665    
Income$10,000 - $19,999         -0.07481    0.20036  -0.373 0.708884    
Income$20,000 - $29,999          0.13249    0.20079   0.660 0.509368    
Income$30,000 - $39,999          0.07333    0.19732   0.372 0.710180    
Income$40,000 - $49,999          0.17607    0.20424   0.862 0.388657    
Income$50,000 - $59,999          0.45907    0.20508   2.238 0.025192 *  
Income$60,000 - $69,999          0.26687    0.20027   1.333 0.182684    
Income$70,000 and over           0.67613    0.14883   4.543 5.55e-06 ***
EthnicityAsian Indian           -0.27207    0.12711  -2.140 0.032329 *  
EthnicityFilipino                0.63742    0.16931   3.765 0.000167 ***
EthnicityKorean                 -0.37748    0.13352  -2.827 0.004696 ** 
EthnicityOther                   0.21965    0.20171   1.089 0.276163    
EthnicityVietnamese              0.26730    0.12994   2.057 0.039681 *  
`English Difficulties`Much      -0.73555    0.12326  -5.968 2.41e-09 ***
`English Difficulties`Not much  -0.65957    0.11420  -5.776 7.67e-09 ***
`English Difficulties`Very much -0.49201    0.12455  -3.950 7.81e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3281.0  on 2366  degrees of freedom
Residual deviance: 3113.6  on 2351  degrees of freedom
AIC: 3145.6

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Heal Professionals
                       LR Chisq Df Pr(>Chisq)    
Income                   44.661  7  1.591e-07 ***
Ethnicity                51.853  5  5.782e-10 ***
`English Difficulties`   48.112  3  2.016e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.151798  7        1.010146
Ethnicity              1.223501  5        1.020376
`English Difficulties` 1.127631  3        1.020222

Source of Information: Mobile apps association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Mobile Apps`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Mobile Apps`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Mobile Apps` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.85921    0.32318  -8.847  < 2e-16 ***
Income$10,000 - $19,999          0.60241    0.37201   1.619  0.10538    
Income$20,000 - $29,999          0.72075    0.36691   1.964  0.04948 *  
Income$30,000 - $39,999          0.45927    0.37707   1.218  0.22322    
Income$40,000 - $49,999          0.28894    0.40142   0.720  0.47164    
Income$50,000 - $59,999          0.90908    0.36056   2.521  0.01169 *  
Income$60,000 - $69,999          0.47782    0.38099   1.254  0.20978    
Income$70,000 and over           0.79709    0.29436   2.708  0.00677 ** 
EthnicityAsian Indian            0.31851    0.20435   1.559  0.11908    
EthnicityFilipino                0.07508    0.26590   0.282  0.77768    
EthnicityKorean                 -0.27606    0.24666  -1.119  0.26306    
EthnicityOther                   0.32946    0.30925   1.065  0.28672    
EthnicityVietnamese              0.35557    0.21170   1.680  0.09305 .  
`English Difficulties`Much      -0.25604    0.20512  -1.248  0.21194    
`English Difficulties`Not much  -0.26762    0.18968  -1.411  0.15827    
`English Difficulties`Very much  0.01876    0.18897   0.099  0.92090    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1531.5  on 2366  degrees of freedom
Residual deviance: 1502.5  on 2351  degrees of freedom
AIC: 1534.5

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Mobile Apps
                       LR Chisq Df Pr(>Chisq)  
Income                  12.6505  7    0.08110 .
Ethnicity               10.1704  5    0.07055 .
`English Difficulties`   3.4183  3    0.33151  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.165319  7        1.010988
Ethnicity              1.230721  5        1.020977
`English Difficulties` 1.153024  3        1.024015

Source of Information: Social Networks association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Social Networks`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Social Networks`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Social Networks` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.589047   0.217577  -7.303 2.81e-13 ***
Income$10,000 - $19,999          0.106707   0.255094   0.418 0.675724    
Income$20,000 - $29,999          0.096830   0.261536   0.370 0.711207    
Income$30,000 - $39,999          0.142528   0.256827   0.555 0.578923    
Income$40,000 - $49,999         -0.120998   0.280671  -0.431 0.666394    
Income$50,000 - $59,999          0.009094   0.275843   0.033 0.973701    
Income$60,000 - $69,999         -0.166955   0.278613  -0.599 0.549015    
Income$70,000 and over           0.319814   0.193408   1.654 0.098215 .  
EthnicityAsian Indian           -0.482716   0.154548  -3.123 0.001788 ** 
EthnicityFilipino               -0.430369   0.204071  -2.109 0.034951 *  
EthnicityKorean                 -1.012321   0.183166  -5.527 3.26e-08 ***
EthnicityOther                  -0.549710   0.264634  -2.077 0.037779 *  
EthnicityVietnamese             -0.488170   0.160302  -3.045 0.002324 ** 
`English Difficulties`Much       0.410870   0.164032   2.505 0.012251 *  
`English Difficulties`Not much   0.534638   0.151162   3.537 0.000405 ***
`English Difficulties`Very much  0.443987   0.160570   2.765 0.005691 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2216.2  on 2366  degrees of freedom
Residual deviance: 2156.4  on 2351  degrees of freedom
AIC: 2188.4

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Social Networks
                       LR Chisq Df Pr(>Chisq)    
Income                    9.198  7   0.238747    
Ethnicity                35.007  5    1.5e-06 ***
`English Difficulties`   14.693  3   0.002099 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.156501  7        1.010440
Ethnicity              1.217897  5        1.019908
`English Difficulties` 1.149528  3        1.023497

Source of Information: Email association with income after controlling for ethnicity.

qol_1 <- qol |> select(Email,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Email~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Email ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.71895    0.24254  -7.087 1.37e-12 ***
Income$10,000 - $19,999          0.09937    0.27699   0.359  0.71979    
Income$20,000 - $29,999         -0.32526    0.30544  -1.065  0.28693    
Income$30,000 - $39,999          0.18592    0.27474   0.677  0.49857    
Income$40,000 - $49,999         -0.16323    0.30589  -0.534  0.59361    
Income$50,000 - $59,999         -0.08853    0.30991  -0.286  0.77514    
Income$60,000 - $69,999          0.12720    0.29100   0.437  0.66202    
Income$70,000 and over          -0.10039    0.21845  -0.460  0.64582    
EthnicityAsian Indian           -0.87637    0.19101  -4.588 4.47e-06 ***
EthnicityFilipino               -0.84050    0.26084  -3.222  0.00127 ** 
EthnicityKorean                 -1.58062    0.25576  -6.180 6.41e-10 ***
EthnicityOther                  -0.99472    0.34914  -2.849  0.00439 ** 
EthnicityVietnamese             -0.05644    0.16497  -0.342  0.73226    
`English Difficulties`Much       0.49407    0.18743   2.636  0.00839 ** 
`English Difficulties`Not much   0.28658    0.18293   1.567  0.11721    
`English Difficulties`Very much  0.51223    0.18759   2.731  0.00632 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1764.6  on 2366  degrees of freedom
Residual deviance: 1670.8  on 2351  degrees of freedom
AIC: 1702.8

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Email
                       LR Chisq Df Pr(>Chisq)    
Income                    4.589  7    0.70999    
Ethnicity                73.035  5   2.39e-14 ***
`English Difficulties`   10.028  3    0.01833 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.158490  7        1.010564
Ethnicity              1.187805  5        1.017360
`English Difficulties` 1.119153  3        1.018939

Source of Information: Online Communities association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Online Communities`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Online Communities`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Online Communities` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.03870    0.23962  -8.508  < 2e-16 ***
Income$10,000 - $19,999         -0.01142    0.30172  -0.038  0.96980    
Income$20,000 - $29,999          0.27831    0.28966   0.961  0.33666    
Income$30,000 - $39,999          0.48431    0.27354   1.771  0.07663 .  
Income$40,000 - $49,999          0.09453    0.30373   0.311  0.75563    
Income$50,000 - $59,999          0.43914    0.28372   1.548  0.12167    
Income$60,000 - $69,999          0.34385    0.28154   1.221  0.22196    
Income$70,000 and over           0.58261    0.21445   2.717  0.00659 ** 
EthnicityAsian Indian            0.21852    0.16404   1.332  0.18281    
EthnicityFilipino               -0.13816    0.22229  -0.622  0.53425    
EthnicityKorean                  0.20646    0.17278   1.195  0.23210    
EthnicityOther                   0.02038    0.26781   0.076  0.93934    
EthnicityVietnamese             -0.07559    0.17986  -0.420  0.67429    
`English Difficulties`Much      -0.14417    0.16464  -0.876  0.38121    
`English Difficulties`Not much  -0.07654    0.14947  -0.512  0.60858    
`English Difficulties`Very much  0.03242    0.15910   0.204  0.83855    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2115.2  on 2366  degrees of freedom
Residual deviance: 2089.1  on 2351  degrees of freedom
AIC: 2121.1

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Online Communities
                       LR Chisq Df Pr(>Chisq)  
Income                  15.2034  7    0.03348 *
Ethnicity                5.5935  5    0.34780  
`English Difficulties`   1.2152  3    0.74937  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.140891  7        1.009459
Ethnicity              1.226282  5        1.020608
`English Difficulties` 1.159297  3        1.024942

Source of Information: Health Website association with income after controlling for ethnicity.

qol_1 <- qol |> select(`Health Website`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Health Website`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Health Website` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      -0.2305     0.1711  -1.347  0.17802    
Income$10,000 - $19,999           0.2029     0.2062   0.984  0.32507    
Income$20,000 - $29,999           0.4174     0.2069   2.018  0.04359 *  
Income$30,000 - $39,999           0.3750     0.2036   1.842  0.06547 .  
Income$40,000 - $49,999           0.2880     0.2113   1.363  0.17288    
Income$50,000 - $59,999           0.8446     0.2084   4.053 5.06e-05 ***
Income$60,000 - $69,999           0.3306     0.2061   1.604  0.10878    
Income$70,000 and over            0.7730     0.1537   5.029 4.92e-07 ***
EthnicityAsian Indian            -0.1198     0.1276  -0.939  0.34789    
EthnicityFilipino                 0.2587     0.1614   1.602  0.10913    
EthnicityKorean                  -0.1240     0.1332  -0.931  0.35190    
EthnicityOther                    0.3549     0.2011   1.765  0.07762 .  
EthnicityVietnamese              -0.3502     0.1326  -2.640  0.00829 ** 
`English Difficulties`Much       -0.6831     0.1233  -5.540 3.03e-08 ***
`English Difficulties`Not much   -0.6834     0.1140  -5.994 2.05e-09 ***
`English Difficulties`Very much  -0.6671     0.1242  -5.371 7.84e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3246.0  on 2366  degrees of freedom
Residual deviance: 3105.5  on 2351  degrees of freedom
AIC: 3137.5

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Health Website
                       LR Chisq Df Pr(>Chisq)    
Income                   42.766  7  3.701e-07 ***
Ethnicity                20.841  5   0.000868 ***
`English Difficulties`   52.778  3  2.045e-11 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.134844  7        1.009076
Ethnicity              1.210635  5        1.019298
`English Difficulties` 1.141474  3        1.022298

Other sources of information

qol |> select(`Health Info Discription`) |> group_by(`Health Info Discription`) |> summarize(n=n())
# A tibble: 63 × 2
   `Health Info Discription`       n
   <fct>                       <int>
 1 Army Base                       2
 2 at school                       1
 3 books and radio                 1
 4 Books; learned from college     1
 5 CDC, NIH-NLM                    1
 6 church                          1
 7 co-worker/trainings             1
 8 Co-workers                      1
 9 Conference,literatures          1
10 courses                         1
# ℹ 53 more rows

income: Only people above age 50

Source of Information association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |> 
  select(Family,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.)) |> 
  filter(Family %in%c("Yes","No")) |>  
  mutate(Family=droplevels(Family)) 
glm(Family~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Family ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      0.36681    0.30656   1.197   0.2315    
Income$10,000 - $19,999         -0.26318    0.31311  -0.841   0.4006    
Income$20,000 - $29,999         -0.23822    0.35264  -0.676   0.4993    
Income$30,000 - $39,999         -0.47825    0.32187  -1.486   0.1373    
Income$40,000 - $49,999         -0.74013    0.34391  -2.152   0.0314 *  
Income$50,000 - $59,999         -0.17679    0.35075  -0.504   0.6142    
Income$60,000 - $69,999         -0.82047    0.36974  -2.219   0.0265 *  
Income$70,000 and over          -0.27695    0.26501  -1.045   0.2960    
EthnicityAsian Indian            0.05252    0.25650   0.205   0.8378    
EthnicityFilipino               -0.09251    0.30415  -0.304   0.7610    
EthnicityKorean                 -0.29943    0.23696  -1.264   0.2064    
EthnicityOther                  -0.93772    0.38605  -2.429   0.0151 *  
EthnicityVietnamese             -0.94545    0.22429  -4.215 2.49e-05 ***
`English Difficulties`Much       0.56231    0.23319   2.411   0.0159 *  
`English Difficulties`Not much   0.19755    0.21576   0.916   0.3599    
`English Difficulties`Very much  0.15509    0.25596   0.606   0.5446    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 999.82  on 721  degrees of freedom
Residual deviance: 952.66  on 706  degrees of freedom
AIC: 984.66

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Family
                       LR Chisq Df Pr(>Chisq)    
Income                   8.6351  7    0.27993    
Ethnicity               26.7599  5  6.352e-05 ***
`English Difficulties`   6.4039  3    0.09353 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Close Friends association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Close Friend`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Close Friend`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Close Friend` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)  
(Intercept)                     -0.42874    0.31299  -1.370   0.1707  
Income$10,000 - $19,999          0.06728    0.31352   0.215   0.8301  
Income$20,000 - $29,999         -0.24858    0.36367  -0.684   0.4943  
Income$30,000 - $39,999         -0.10892    0.32556  -0.335   0.7380  
Income$40,000 - $49,999         -0.28828    0.35142  -0.820   0.4120  
Income$50,000 - $59,999         -0.37253    0.36649  -1.016   0.3094  
Income$60,000 - $69,999         -0.70694    0.39991  -1.768   0.0771 .
Income$70,000 and over          -0.15951    0.26749  -0.596   0.5510  
EthnicityAsian Indian            0.04070    0.25788   0.158   0.8746  
EthnicityFilipino               -0.38790    0.33304  -1.165   0.2441  
EthnicityKorean                 -0.28089    0.24605  -1.142   0.2536  
EthnicityOther                   0.06676    0.37571   0.178   0.8590  
EthnicityVietnamese             -0.58392    0.23313  -2.505   0.0123 *
`English Difficulties`Much       0.47513    0.23846   1.992   0.0463 *
`English Difficulties`Not much   0.16504    0.22609   0.730   0.4654  
`English Difficulties`Very much -0.12862    0.27239  -0.472   0.6368  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 927.18  on 722  degrees of freedom
Residual deviance: 904.51  on 707  degrees of freedom
AIC: 936.51

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Close Friend
                       LR Chisq Df Pr(>Chisq)  
Income                   5.2953  7    0.62397  
Ethnicity                9.1507  5    0.10320  
`English Difficulties`   6.4572  3    0.09137 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Acquaintances association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(Acquaintances,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Acquaintances~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Acquaintances ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -2.06434    0.41642  -4.957 7.15e-07 ***
Income$10,000 - $19,999         -0.03410    0.40031  -0.085  0.93212    
Income$20,000 - $29,999         -0.47548    0.49996  -0.951  0.34159    
Income$30,000 - $39,999          0.58230    0.38001   1.532  0.12544    
Income$40,000 - $49,999         -0.21786    0.46266  -0.471  0.63772    
Income$50,000 - $59,999         -0.44706    0.49626  -0.901  0.36766    
Income$60,000 - $69,999         -0.12095    0.48259  -0.251  0.80210    
Income$70,000 and over           0.13439    0.34044   0.395  0.69303    
EthnicityAsian Indian            0.84645    0.33201   2.549  0.01079 *  
EthnicityFilipino               -0.01465    0.47236  -0.031  0.97526    
EthnicityKorean                  0.94250    0.30819   3.058  0.00223 ** 
EthnicityOther                  -0.34351    0.64752  -0.531  0.59576    
EthnicityVietnamese              0.36256    0.31120   1.165  0.24401    
`English Difficulties`Much       0.24058    0.29596   0.813  0.41629    
`English Difficulties`Not much   0.08182    0.27975   0.292  0.76991    
`English Difficulties`Very much -0.37375    0.37729  -0.991  0.32186    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 665.42  on 721  degrees of freedom
Residual deviance: 634.44  on 706  degrees of freedom
AIC: 666.44

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Acquaintances
                       LR Chisq Df Pr(>Chisq)   
Income                   8.7685  7   0.269710   
Ethnicity               15.6699  5   0.007852 **
`English Difficulties`   2.9576  3   0.398204   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Source of Information: Health professionals association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |>
  select(`Heal Professionals`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Heal Professionals`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Heal Professionals` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.28084    0.30836  -0.911 0.362415    
Income$10,000 - $19,999          0.21623    0.31203   0.693 0.488327    
Income$20,000 - $29,999          0.09153    0.35036   0.261 0.793900    
Income$30,000 - $39,999         -0.03811    0.32043  -0.119 0.905329    
Income$40,000 - $49,999          0.49568    0.33697   1.471 0.141292    
Income$50,000 - $59,999          0.27589    0.34891   0.791 0.429109    
Income$60,000 - $69,999          0.42902    0.36083   1.189 0.234440    
Income$70,000 and over           0.97419    0.26694   3.649 0.000263 ***
EthnicityAsian Indian            0.37060    0.25872   1.432 0.152027    
EthnicityFilipino                0.81650    0.33116   2.466 0.013679 *  
EthnicityKorean                 -0.11733    0.24120  -0.486 0.626660    
EthnicityOther                   0.70143    0.38796   1.808 0.070608 .  
EthnicityVietnamese              0.48786    0.22206   2.197 0.028024 *  
`English Difficulties`Much      -0.47030    0.23257  -2.022 0.043155 *  
`English Difficulties`Not much  -0.47406    0.21690  -2.186 0.028846 *  
`English Difficulties`Very much -0.30988    0.25931  -1.195 0.232084    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1001.28  on 722  degrees of freedom
Residual deviance:  945.74  on 707  degrees of freedom
AIC: 977.74

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Heal Professionals
                       LR Chisq Df Pr(>Chisq)   
Income                  23.4507  7   0.001422 **
Ethnicity               14.9889  5   0.010410 * 
`English Difficulties`   5.6138  3   0.131986   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.302470  7        1.019055
Ethnicity              1.363641  5        1.031502
`English Difficulties` 1.214059  3        1.032856

Source of Information: Mobile apps association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Mobile Apps`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Mobile Apps`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Mobile Apps` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -3.68837    0.72722  -5.072 3.94e-07 ***
Income$10,000 - $19,999          1.23016    0.70722   1.739   0.0820 .  
Income$20,000 - $29,999          1.26095    0.75515   1.670   0.0950 .  
Income$30,000 - $39,999          0.75306    0.76359   0.986   0.3240    
Income$40,000 - $49,999          0.45139    0.85089   0.530   0.5958    
Income$50,000 - $59,999          0.65099    0.84715   0.768   0.4422    
Income$60,000 - $69,999          1.10923    0.80040   1.386   0.1658    
Income$70,000 and over           1.52534    0.64670   2.359   0.0183 *  
EthnicityAsian Indian            0.99591    0.45319   2.198   0.0280 *  
EthnicityFilipino               -0.09863    0.62134  -0.159   0.8739    
EthnicityKorean                  0.21641    0.49337   0.439   0.6609    
EthnicityOther                   0.37391    0.69144   0.541   0.5887    
EthnicityVietnamese              0.80723    0.41883   1.927   0.0539 .  
`English Difficulties`Much      -0.51195    0.42059  -1.217   0.2235    
`English Difficulties`Not much  -0.36401    0.36738  -0.991   0.3218    
`English Difficulties`Very much -0.48091    0.47049  -1.022   0.3067    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 398.98  on 722  degrees of freedom
Residual deviance: 379.32  on 707  degrees of freedom
AIC: 411.32

Number of Fisher Scoring iterations: 6
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Mobile Apps
                       LR Chisq Df Pr(>Chisq)
Income                  10.6108  7     0.1565
Ethnicity                8.1279  5     0.1493
`English Difficulties`   1.9692  3     0.5788
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.325632  7        1.020339
Ethnicity              1.333288  5        1.029182
`English Difficulties` 1.269087  3        1.040516

Source of Information: Social Networks association with income after controlling for ethnicity.

qol_1 <- qol |>
  filter(Age >=50) |>
  select(`Social Networks`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Social Networks`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Social Networks` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.46140    0.41808  -3.496 0.000473 ***
Income$10,000 - $19,999          0.48306    0.41912   1.153 0.249095    
Income$20,000 - $29,999          0.06815    0.49145   0.139 0.889705    
Income$30,000 - $39,999         -0.18662    0.47950  -0.389 0.697132    
Income$40,000 - $49,999         -0.16280    0.49723  -0.327 0.743357    
Income$50,000 - $59,999          0.46150    0.46549   0.991 0.321476    
Income$60,000 - $69,999         -0.21578    0.54373  -0.397 0.691474    
Income$70,000 and over           0.30551    0.36335   0.841 0.400449    
EthnicityAsian Indian           -1.07291    0.36764  -2.918 0.003518 ** 
EthnicityFilipino               -0.62636    0.41192  -1.521 0.128370    
EthnicityKorean                 -1.50978    0.37687  -4.006 6.17e-05 ***
EthnicityOther                  -0.19677    0.43853  -0.449 0.653638    
EthnicityVietnamese             -0.80614    0.28365  -2.842 0.004483 ** 
`English Difficulties`Much       0.25557    0.32332   0.790 0.429252    
`English Difficulties`Not much   0.44741    0.29956   1.494 0.135289    
`English Difficulties`Very much  0.20278    0.34214   0.593 0.553385    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 636.82  on 722  degrees of freedom
Residual deviance: 603.14  on 707  degrees of freedom
AIC: 635.14

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Social Networks
                       LR Chisq Df Pr(>Chisq)    
Income                   5.4182  7  0.6090709    
Ethnicity               24.4683  5  0.0001764 ***
`English Difficulties`   2.3143  3  0.5097907    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.291552  7        1.018443
Ethnicity              1.339391  5        1.029653
`English Difficulties` 1.266980  3        1.040227

Source of Information: Email association with income after controlling for ethnicity.

qol_1 <- qol |> filter(Age >=50) |>
  select(Email,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(Email~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = Email ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -0.990850   0.384575  -2.576  0.00998 ** 
Income$10,000 - $19,999          0.258859   0.400814   0.646  0.51839    
Income$20,000 - $29,999         -0.343944   0.507724  -0.677  0.49814    
Income$30,000 - $39,999          0.526123   0.403411   1.304  0.19217    
Income$40,000 - $49,999         -0.245881   0.485303  -0.507  0.61240    
Income$50,000 - $59,999         -0.001372   0.484744  -0.003  0.99774    
Income$60,000 - $69,999          0.343542   0.465999   0.737  0.46099    
Income$70,000 and over           0.416312   0.337439   1.234  0.21730    
EthnicityAsian Indian           -0.694628   0.307687  -2.258  0.02397 *  
EthnicityFilipino               -1.168110   0.422479  -2.765  0.00569 ** 
EthnicityKorean                 -1.660003   0.359541  -4.617 3.89e-06 ***
EthnicityOther                  -2.049923   0.747299  -2.743  0.00609 ** 
EthnicityVietnamese             -0.728322   0.261011  -2.790  0.00526 ** 
`English Difficulties`Much       0.103462   0.289954   0.357  0.72123    
`English Difficulties`Not much   0.012295   0.275223   0.045  0.96437    
`English Difficulties`Very much -0.239403   0.326252  -0.734  0.46307    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 699.09  on 722  degrees of freedom
Residual deviance: 653.48  on 707  degrees of freedom
AIC: 685.48

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Email
                       LR Chisq Df Pr(>Chisq)    
Income                    7.319  7     0.3964    
Ethnicity                35.659  5  1.111e-06 ***
`English Difficulties`    1.190  3     0.7553    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.294807  7        1.018626
Ethnicity              1.322140  5        1.028319
`English Difficulties` 1.225625  3        1.034490

Source of Information: Online Communities association with income after controlling for ethnicity.

qol_1 <- qol |>
  filter(Age >=50) |>
  select(`Online Communities`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Online Communities`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Online Communities` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     -1.58579    0.42761  -3.709 0.000208 ***
Income$10,000 - $19,999          0.06886    0.44701   0.154 0.877574    
Income$20,000 - $29,999         -0.06721    0.50771  -0.132 0.894682    
Income$30,000 - $39,999          0.03459    0.46045   0.075 0.940114    
Income$40,000 - $49,999         -0.67664    0.57000  -1.187 0.235194    
Income$50,000 - $59,999          0.35332    0.47552   0.743 0.457471    
Income$60,000 - $69,999         -0.36161    0.57322  -0.631 0.528148    
Income$70,000 and over           0.44661    0.37038   1.206 0.227885    
EthnicityAsian Indian           -0.07136    0.35618  -0.200 0.841216    
EthnicityFilipino               -0.07632    0.41833  -0.182 0.855229    
EthnicityKorean                 -0.26110    0.34515  -0.756 0.449368    
EthnicityOther                   0.57520    0.44489   1.293 0.196043    
EthnicityVietnamese              0.05264    0.30451   0.173 0.862747    
`English Difficulties`Much      -0.35620    0.31056  -1.147 0.251390    
`English Difficulties`Not much  -0.24270    0.28189  -0.861 0.389251    
`English Difficulties`Very much -0.72440    0.36996  -1.958 0.050226 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 609.67  on 722  degrees of freedom
Residual deviance: 592.24  on 707  degrees of freedom
AIC: 624.24

Number of Fisher Scoring iterations: 5
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Online Communities
                       LR Chisq Df Pr(>Chisq)
Income                   8.7773  7     0.2690
Ethnicity                3.0724  5     0.6888
`English Difficulties`   4.2641  3     0.2343
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.325827  7        1.020350
Ethnicity              1.376986  5        1.032507
`English Difficulties` 1.277129  3        1.041612

Source of Information: Health Website association with income after controlling for ethnicity.

qol_1 <- qol |>filter(Age >=50) |>
  select(`Health Website`,Income,Ethnicity,`English Difficulties`) %>% filter(complete.cases(.))
glm(`Health Website`~Income+Ethnicity+`English Difficulties`,data=qol_1,family="binomial") -> mod1
summary(mod1)

Call:
glm(formula = `Health Website` ~ Income + Ethnicity + `English Difficulties`, 
    family = "binomial", data = qol_1)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                      -0.5791     0.3412  -1.697  0.08961 .  
Income$10,000 - $19,999           0.3790     0.3584   1.058  0.29025    
Income$20,000 - $29,999           0.1019     0.4168   0.245  0.80680    
Income$30,000 - $39,999           0.6505     0.3614   1.800  0.07187 .  
Income$40,000 - $49,999           0.2670     0.3892   0.686  0.49269    
Income$50,000 - $59,999           1.1734     0.3800   3.088  0.00201 ** 
Income$60,000 - $69,999           0.3058     0.4146   0.738  0.46077    
Income$70,000 and over            1.2548     0.3017   4.160 3.19e-05 ***
EthnicityAsian Indian            -0.1206     0.2716  -0.444  0.65705    
EthnicityFilipino                 0.4944     0.3205   1.542  0.12297    
EthnicityKorean                  -0.5106     0.2581  -1.978  0.04788 *  
EthnicityOther                    0.6469     0.3884   1.665  0.09581 .  
EthnicityVietnamese              -0.4972     0.2383  -2.086  0.03694 *  
`English Difficulties`Much       -0.6411     0.2419  -2.650  0.00806 ** 
`English Difficulties`Not much   -0.5409     0.2214  -2.443  0.01458 *  
`English Difficulties`Very much  -1.1101     0.2749  -4.039 5.37e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 950.14  on 722  degrees of freedom
Residual deviance: 859.13  on 707  degrees of freedom
AIC: 891.13

Number of Fisher Scoring iterations: 4
car::Anova(mod1)
Analysis of Deviance Table (Type II tests)

Response: Health Website
                       LR Chisq Df Pr(>Chisq)    
Income                   34.633  7  1.311e-05 ***
Ethnicity                17.853  5  0.0031368 ** 
`English Difficulties`   18.116  3  0.0004164 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car::vif(mod1)
                           GVIF Df GVIF^(1/(2*Df))
Income                 1.265151  7        1.016941
Ethnicity              1.334244  5        1.029256
`English Difficulties` 1.219501  3        1.033627

Other sources of information

qol |> filter(Age >=50) |> select(`Health Info Discription`) |> group_by(`Health Info Discription`) |> summarize(n=n())
# A tibble: 25 × 2
   `Health Info Discription`     n
   <fct>                     <int>
 1 books and radio               1
 2 CDC, NIH-NLM                  1
 3 church                        1
 4 Don't know                    1
 5 Dr. Oz show                   1
 6 Family Doctor                 2
 7 From work                     1
 8 Health & News XXX             1
 9 Internet, google              1
10 Korean Newspaper              1
# ℹ 15 more rows

Health Care Access and Utilization

We will use a model comparison approach to determine whether accounting for Asian ethnicity will improve model performance. The model of choice will be logistic regression for the following response variables: Physical check up, dental check up, urgent care, and folk medicine.

Physical check up

mod2 <- glm(`Physical Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Physical Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.791676   0.221500  -8.089 6.02e-16 ***
Income$10,000 - $19,999 -0.165434   0.214035  -0.773   0.4396    
Income$20,000 - $29,999 -0.100058   0.216709  -0.462   0.6443    
Income$30,000 - $39,999  0.071347   0.218307   0.327   0.7438    
Income$40,000 - $49,999 -0.113657   0.222478  -0.511   0.6094    
Income$50,000 - $59,999  0.183865   0.228487   0.805   0.4210    
Income$60,000 - $69,999 -0.150382   0.220380  -0.682   0.4950    
Income$70,000 and over   0.468626   0.172532   2.716   0.0066 ** 
Age                      0.027938   0.003073   9.092  < 2e-16 ***
GenderMale              -0.605188   0.098124  -6.168 6.94e-10 ***
`Health Insurance`Yes    1.376535   0.148848   9.248  < 2e-16 ***
`Dental Insurance`Yes    0.634931   0.114134   5.563 2.65e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2563.2  on 2329  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2587.2

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.251830  7        1.016173
Age                1.045017  1        1.022261
Gender             1.031051  1        1.015407
`Health Insurance` 1.217957  1        1.103611
`Dental Insurance` 1.381205  1        1.175247
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               25.851  7      0.001 ***
Age                  88.724  1     <2e-16 ***
Gender               38.644  1     <2e-16 ***
`Health Insurance`   90.705  1     <2e-16 ***
`Dental Insurance`   30.726  1     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.852115   0.238185  -7.776 7.49e-15 ***
Income$10,000 - $19,999 -0.174121   0.215485  -0.808 0.419066    
Income$20,000 - $29,999 -0.126341   0.221148  -0.571 0.567799    
Income$30,000 - $39,999  0.077850   0.222946   0.349 0.726948    
Income$40,000 - $49,999 -0.117466   0.226777  -0.518 0.604473    
Income$50,000 - $59,999  0.282262   0.231499   1.219 0.222738    
Income$60,000 - $69,999 -0.032230   0.223516  -0.144 0.885347    
Income$70,000 and over   0.590740   0.174999   3.376 0.000736 ***
Age                      0.029034   0.003129   9.279  < 2e-16 ***
GenderMale              -0.625762   0.101055  -6.192 5.93e-10 ***
`Health Insurance`Yes    1.407716   0.150764   9.337  < 2e-16 ***
`Dental Insurance`Yes    0.520273   0.117424   4.431 9.39e-06 ***
EthnicityAsian Indian    0.017213   0.145624   0.118 0.905908    
EthnicityFilipino        0.340001   0.198125   1.716 0.086144 .  
EthnicityKorean         -0.532275   0.146953  -3.622 0.000292 ***
EthnicityOther          -0.135731   0.231250  -0.587 0.557241    
EthnicityVietnamese      0.459230   0.155465   2.954 0.003138 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2948.2  on 2340  degrees of freedom
Residual deviance: 2519.3  on 2324  degrees of freedom
  (268 observations deleted due to missingness)
AIC: 2553.3

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.397966  7        1.024219
Age                1.063751  1        1.031383
Gender             1.071561  1        1.035162
`Health Insurance` 1.229949  1        1.109031
`Dental Insurance` 1.431618  1        1.196502
Ethnicity          1.229986  5        1.020916
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Physical Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               33.852  7  < 2.2e-16 ***
Age                  92.732  1  < 2.2e-16 ***
Gender               38.996  1  < 2.2e-16 ***
`Health Insurance`   92.711  1  < 2.2e-16 ***
`Dental Insurance`   19.461  1  < 2.2e-16 ***
Ethnicity            43.845  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Physical Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)    
1      2329     2563.2                         
2      2324     2519.3  5   43.845 2.49e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1  2656.26 2651.206 -5.053363

The ethnicity model has a lower BIC and residual deviance, which implies better model performance compared to the model without the ethnicity included.

Dental check up

mod2 <- glm(`Dentist Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Dentist Check-up`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.564608   0.218250  -7.169 7.56e-13 ***
Income$10,000 - $19,999 -0.355973   0.215685  -1.650 0.098856 .  
Income$20,000 - $29,999 -0.119991   0.215247  -0.557 0.577215    
Income$30,000 - $39,999  0.197338   0.212110   0.930 0.352186    
Income$40,000 - $49,999 -0.029866   0.218651  -0.137 0.891355    
Income$50,000 - $59,999  0.466839   0.223983   2.084 0.037136 *  
Income$60,000 - $69,999 -0.130191   0.216663  -0.601 0.547913    
Income$70,000 and over   0.548444   0.167810   3.268 0.001082 ** 
Age                      0.016451   0.002879   5.715 1.10e-08 ***
GenderMale              -0.611567   0.095164  -6.426 1.31e-10 ***
`Health Insurance`Yes    0.540154   0.151323   3.570 0.000358 ***
`Dental Insurance`Yes    1.399448   0.109933  12.730  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2696.3  on 2321  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2720.3

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.212765  7        1.013874
Age                1.049007  1        1.024210
Gender             1.034115  1        1.016914
`Health Insurance` 1.188875  1        1.090355
`Dental Insurance` 1.348203  1        1.161122
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               43.514  7  < 2.2e-16 ***
Age                  33.298  1  < 2.2e-16 ***
Gender               42.036  1  < 2.2e-16 ***
`Health Insurance`   13.047  1  < 2.2e-16 ***
`Dental Insurance`  168.903  1  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -1.227465   0.233222  -5.263 1.42e-07 ***
Income$10,000 - $19,999 -0.502910   0.218675  -2.300 0.021459 *  
Income$20,000 - $29,999 -0.320628   0.218282  -1.469 0.141869    
Income$30,000 - $39,999  0.063815   0.215561   0.296 0.767199    
Income$40,000 - $49,999 -0.186746   0.222172  -0.841 0.400602    
Income$50,000 - $59,999  0.421417   0.225512   1.869 0.061663 .  
Income$60,000 - $69,999 -0.117850   0.220987  -0.533 0.593832    
Income$70,000 and over   0.633374   0.170046   3.725 0.000196 ***
Age                      0.015498   0.002935   5.281 1.29e-07 ***
GenderMale              -0.503110   0.098166  -5.125 2.97e-07 ***
`Health Insurance`Yes    0.572604   0.153190   3.738 0.000186 ***
`Dental Insurance`Yes    1.391181   0.113559  12.251  < 2e-16 ***
EthnicityAsian Indian   -1.062227   0.144800  -7.336 2.20e-13 ***
EthnicityFilipino       -0.031389   0.189558  -0.166 0.868478    
EthnicityKorean         -0.448159   0.148279  -3.022 0.002508 ** 
EthnicityOther          -0.202173   0.234423  -0.862 0.388452    
EthnicityVietnamese     -0.011413   0.149074  -0.077 0.938975    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3169.7  on 2332  degrees of freedom
Residual deviance: 2622.4  on 2316  degrees of freedom
  (276 observations deleted due to missingness)
AIC: 2656.4

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.378711  7        1.023204
Age                1.058330  1        1.028752
Gender             1.065155  1        1.032063
`Health Insurance` 1.190317  1        1.091017
`Dental Insurance` 1.396124  1        1.181577
Ethnicity          1.280598  5        1.025041
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Dentist Check-up
                   LR Chisq Df Pr(>Chisq)    
Income               62.672  7  < 2.2e-16 ***
Age                  28.263  1  < 2.2e-16 ***
Gender               26.512  1  < 2.2e-16 ***
`Health Insurance`   14.312  1  < 2.2e-16 ***
`Dental Insurance`  156.605  1  < 2.2e-16 ***
Ethnicity            73.873  5  < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`
Model 2: `Dentist Check-up` ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2321     2696.3                          
2      2316     2622.4  5   73.873 1.599e-14 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1 2789.363 2754.264 -35.09842

The ethnicity model has a lower BIC and residual deviance, which implies better model performance compared to the model without the ethnicity included.

Urgent Care

mod2 <- glm(`Urgentcare`~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(`Urgentcare`~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Urgentcare ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -2.628813   0.285621  -9.204  < 2e-16 ***
Income$10,000 - $19,999  0.103635   0.266389   0.389  0.69725    
Income$20,000 - $29,999  0.291749   0.259072   1.126  0.26011    
Income$30,000 - $39,999 -0.239587   0.278005  -0.862  0.38879    
Income$40,000 - $49,999  0.163175   0.266674   0.612  0.54061    
Income$50,000 - $59,999 -0.012392   0.275700  -0.045  0.96415    
Income$60,000 - $69,999  0.049139   0.267143   0.184  0.85406    
Income$70,000 and over  -0.090993   0.209564  -0.434  0.66414    
Age                      0.009455   0.003400   2.781  0.00542 ** 
GenderMale               0.046069   0.111497   0.413  0.67947    
`Health Insurance`Yes    0.461500   0.208546   2.213  0.02690 *  
`Dental Insurance`Yes    0.365912   0.137902   2.653  0.00797 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2104.7  on 2313  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2128.7

Number of Fisher Scoring iterations: 4
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.244903  7        1.015770
Age                1.025471  1        1.012656
Gender             1.012255  1        1.006109
`Health Insurance` 1.192892  1        1.092196
`Dental Insurance` 1.381201  1        1.175245
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income                5.677  7      0.578   
Age                   7.663  1      0.006 **
Gender                0.171  1      0.680   
`Health Insurance`    5.203  1      0.023 * 
`Dental Insurance`    7.218  1      0.007 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Urgentcare ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.029825   0.310965  -9.743  < 2e-16 ***
Income$10,000 - $19,999  0.143040   0.268911   0.532  0.59478    
Income$20,000 - $29,999  0.244280   0.262371   0.931  0.35183    
Income$30,000 - $39,999 -0.308454   0.281026  -1.098  0.27238    
Income$40,000 - $49,999  0.098707   0.269453   0.366  0.71412    
Income$50,000 - $59,999 -0.038185   0.278140  -0.137  0.89080    
Income$60,000 - $69,999  0.056761   0.268558   0.211  0.83261    
Income$70,000 and over  -0.053120   0.210768  -0.252  0.80102    
Age                      0.009016   0.003459   2.607  0.00915 ** 
GenderMale               0.072787   0.114311   0.637  0.52429    
`Health Insurance`Yes    0.468559   0.208911   2.243  0.02491 *  
`Dental Insurance`Yes    0.339428   0.140732   2.412  0.01587 *  
EthnicityAsian Indian    0.357767   0.180361   1.984  0.04730 *  
EthnicityFilipino        0.624667   0.207249   3.014  0.00258 ** 
EthnicityKorean          0.511938   0.182607   2.803  0.00506 ** 
EthnicityOther           0.495625   0.263786   1.879  0.06026 .  
EthnicityVietnamese      0.662442   0.177498   3.732  0.00019 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2134.9  on 2324  degrees of freedom
Residual deviance: 2087.1  on 2308  degrees of freedom
  (284 observations deleted due to missingness)
AIC: 2121.1

Number of Fisher Scoring iterations: 4
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.382138  7        1.023386
Age                1.038338  1        1.018989
Gender             1.055916  1        1.027578
`Health Insurance` 1.191390  1        1.091508
`Dental Insurance` 1.428024  1        1.195000
Ethnicity          1.222646  5        1.020305
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Urgentcare
                   LR Chisq Df Pr(>Chisq)   
Income                5.118  7      0.646   
Age                   6.732  1      0.009 **
Gender                0.405  1      0.524   
`Health Insurance`    5.347  1      0.021 * 
`Dental Insurance`    5.941  1      0.015 * 
Ethnicity            17.629  5      0.003 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Urgentcare ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance`
Model 2: Urgentcare ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance` + 
    Ethnicity
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)   
1      2313     2104.7                        
2      2308     2087.1  5   17.629 0.003449 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3     Diff
1 2197.747 2218.875 21.12804

The ethnicity model has a lower residual deviance but higher BIC, which implies that there is no evidence of better model performance when ethnicity is added to the model.

Folk medicine

mod2 <- glm(Folkmedicine~Income + Age + Gender + `Health Insurance` + `Dental Insurance`,
            data=qol,
            family="binomial")

mod3 <- glm(Folkmedicine~Income + Age + Gender + `Health Insurance` + `Dental Insurance` + Ethnicity,
            data=qol,
            family="binomial")
summary(mod2)

Call:
glm(formula = Folkmedicine ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance`, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.382774   0.330715 -10.229  < 2e-16 ***
Income$10,000 - $19,999  0.673935   0.304433   2.214  0.02685 *  
Income$20,000 - $29,999  0.541475   0.321107   1.686  0.09174 .  
Income$30,000 - $39,999  0.864416   0.301175   2.870  0.00410 ** 
Income$40,000 - $49,999  0.388059   0.333190   1.165  0.24415    
Income$50,000 - $59,999  0.573504   0.325026   1.764  0.07765 .  
Income$60,000 - $69,999  0.794680   0.318034   2.499  0.01246 *  
Income$70,000 and over   0.626996   0.263888   2.376  0.01750 *  
Age                      0.026843   0.003763   7.133 9.84e-13 ***
GenderMale              -0.347185   0.126002  -2.755  0.00586 ** 
`Health Insurance`Yes   -0.133492   0.196643  -0.679  0.49723    
`Dental Insurance`Yes    0.048323   0.150114   0.322  0.74752    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1773.3  on 2298  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1797.3

Number of Fisher Scoring iterations: 5
car::vif(mod2)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.268863  7        1.017154
Age                1.057633  1        1.028413
Gender             1.009714  1        1.004845
`Health Insurance` 1.251371  1        1.118647
`Dental Insurance` 1.434294  1        1.197620
car::Anova(mod2) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income               11.222  7      0.129    
Age                  51.608  1     <2e-16 ***
Gender                7.705  1      0.006 ** 
`Health Insurance`    0.456  1      0.500    
`Dental Insurance`    0.104  1      0.747    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod3)

Call:
glm(formula = Folkmedicine ~ Income + Age + Gender + `Health Insurance` + 
    `Dental Insurance` + Ethnicity, family = "binomial", data = qol)

Coefficients:
                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)             -3.018154   0.347709  -8.680  < 2e-16 ***
Income$10,000 - $19,999  0.611878   0.309753   1.975  0.04823 *  
Income$20,000 - $29,999  0.562372   0.328592   1.711  0.08700 .  
Income$30,000 - $39,999  0.847733   0.308206   2.751  0.00595 ** 
Income$40,000 - $49,999  0.363136   0.340150   1.068  0.28571    
Income$50,000 - $59,999  0.439830   0.331955   1.325  0.18518    
Income$60,000 - $69,999  0.629878   0.324214   1.943  0.05204 .  
Income$70,000 and over   0.451240   0.269132   1.677  0.09361 .  
Age                      0.026241   0.003815   6.878 6.05e-12 ***
GenderMale              -0.301015   0.129537  -2.324  0.02014 *  
`Health Insurance`Yes   -0.106211   0.199708  -0.532  0.59484    
`Dental Insurance`Yes    0.211142   0.155190   1.361  0.17366    
EthnicityAsian Indian   -0.790092   0.201162  -3.928 8.58e-05 ***
EthnicityFilipino       -0.818803   0.250572  -3.268  0.00108 ** 
EthnicityKorean          0.191121   0.162968   1.173  0.24089    
EthnicityOther          -0.623253   0.309280  -2.015  0.04389 *  
EthnicityVietnamese     -1.094267   0.213666  -5.121 3.03e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1843.9  on 2309  degrees of freedom
Residual deviance: 1711.3  on 2293  degrees of freedom
  (299 observations deleted due to missingness)
AIC: 1745.3

Number of Fisher Scoring iterations: 5
car::vif(mod3)
                       GVIF Df GVIF^(1/(2*Df))
Income             1.382160  7        1.023387
Age                1.052858  1        1.026089
Gender             1.035179  1        1.017437
`Health Insurance` 1.244334  1        1.115497
`Dental Insurance` 1.487271  1        1.219537
Ethnicity          1.167382  5        1.015597
car::Anova(mod3) %>% round(3)
Analysis of Deviance Table (Type II tests)

Response: Folkmedicine
                   LR Chisq Df Pr(>Chisq)    
Income                9.299  7      0.232    
Age                  47.837  1     <2e-16 ***
Gender                5.464  1      0.019 *  
`Health Insurance`    0.280  1      0.596    
`Dental Insurance`    1.870  1      0.171    
Ethnicity            62.007  5     <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(mod2,mod3,test="LRT")
Analysis of Deviance Table

Model 1: Folkmedicine ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance`
Model 2: Folkmedicine ~ Income + Age + Gender + `Health Insurance` + `Dental Insurance` + 
    Ethnicity
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1      2298     1773.3                          
2      2293     1711.3  5   62.007 4.673e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data.frame(BIC_mod2=BIC(mod2), BIC_mod3=BIC(mod3)) |> mutate(Diff=BIC_mod3-BIC_mod2)
  BIC_mod2 BIC_mod3      Diff
1  1866.23 1842.948 -23.28243